package com.fruit.util;

import org.apache.log4j.Logger;

/**
 * 日志代理
 * @author Administrator 说明：日期处理 创建人：FH Q313596790
 * @version 2017.12.01 11:40
 */
public class LoggerProxy {
  private  Logger logger;

    protected LoggerProxy(Class<?> clazz) {
        this(clazz.getName());
    }

    protected LoggerProxy(String name) {
        this.logger = Logger.getLogger(name);
    }

    /**
	 * getLogger
	 * @param clazz clazz
	 * @return LoggerProxy
	 * @author Administrator 说明：日期处理 创建人：FH Q313596790
	 * @version 2017.12.01 11:40
	 */
    public static LoggerProxy getLogger(Class<?> clazz) {
        return new LoggerProxy(clazz);
    }

    /**
   	 * getLogger
   	 * @param name name
   	 * @return LoggerProxy
   	 * @author Administrator 说明：日期处理 创建人：FH Q313596790
   	 * @version 2017.12.01 11:40
   	 */
    public static LoggerProxy getLogger(String name) {
        return new LoggerProxy(name);
    }

    /**
   	 * debug
   	 * @param message message
   	 * @author Administrator 说明：日期处理 创建人：FH Q313596790
   	 * @version 2017.12.01 11:40
   	 */
    public void debug(String message) {
        logger.debug(message);
    }

    /**
   	 * info
   	 * @param message message
   	 * @author Administrator 说明：日期处理 创建人：FH Q313596790
   	 * @version 2017.12.01 11:40
   	 */
    public void info(String message) {
        logger.info(message);
    }

    /**
   	 * warn
   	 * @param message message
   	 * @author Administrator 说明：日期处理 创建人：FH Q313596790
   	 * @version 2017.12.01 11:40
   	 */
    public void warn(String message) {
        logger.warn(message);
    }

    /**
   	 * error
   	 * @param message message
   	 * @author Administrator 说明：日期处理 创建人：FH Q313596790
   	 * @version 2017.12.01 11:40
   	 */
    public void error(String message) {
        logger.error(message);
    }

    /**
   	 * debug
   	 * @param message message
   	 * @param args args
   	 * @author Administrator 说明：日期处理 创建人：FH Q313596790
   	 * @version 2017.12.01 11:40
   	 */
    public void debug(String message, Object... args) {
        logger.debug(doMsg(message, args));
    }

    /**
   	 * info
   	 * @param message message
   	 * @param args args
   	 * @author Administrator 说明：日期处理 创建人：FH Q313596790
   	 * @version 2017.12.01 11:40
   	 */
    public void info(String message, Object... args) {
        logger.info(doMsg(message, args));
    }

    /**
   	 * warn
   	 * @param message message
   	 * @param args args
   	 * @author Administrator 说明：日期处理 创建人：FH Q313596790
   	 * @version 2017.12.01 11:40
   	 */
    public void warn(String message, Object... args) {
        logger.warn(doMsg(message, args));
    }

    /**
   	 * error
   	 * @param message message
   	 * @param args args
   	 * @author Administrator 说明：日期处理 创建人：FH Q313596790
   	 * @version 2017.12.01 11:40
   	 */
    public void error(String message, Object... args) {
        logger.error(doMsg(message, args));
    }

    private String doMsg(String message, Object... args) {
        if (args == null || args.length == 0) {
            return message;
        } else {
            boolean e = args[args.length - 1] instanceof Throwable;
            return doAppend(message, e, args);
        }
    }

    private String doAppend(String message, boolean e, Object... args) {
        for (int i = 0; i < (e ? args.length - 1 : args.length); i++) {
            message = message.replaceFirst("\\{\\}", args[i].toString());
        }

        if (e) {
            message += args[args.length - 1].toString();
        }

        return message;
    }
}
